package jp.beourselves.open.sample.beanio;

import java.beans.XMLDecoder;
import java.beans.XMLEncoder;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;

public class BeanFileIOUtil {
	/**
	 * Beanファイルを読み込む ファイルが存在しない場合は null が戻る
	 * @param fileName Beanファイル
	 * @return Bean (ファイルが存在しない場合 null)
	 */
	public static Object readBean(String fileName) {
		Object bean = null;
		try {
			XMLDecoder decoder = new XMLDecoder(new BufferedInputStream(
					new FileInputStream(fileName)));
			bean = decoder.readObject();
			decoder.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}

		return bean;
	}

	/**
	 * Beanファイルを書き込む
	 * @param fileName Beanファイル
	 * @param bean 書き込むBean
	 */
	public static void writeBean(String fileName, Object bean) {
		try {
			File file = new File(fileName);

			// 指定のフォルダがない場合は作る (親フォルダがルートの場合は無視する)
			File parentDir = file.getParentFile();
			if (parentDir != null && !parentDir.exists())
				parentDir.mkdirs();

			XMLEncoder encoder = new XMLEncoder(new BufferedOutputStream(
					new FileOutputStream(fileName)));
			encoder.writeObject(bean);
			encoder.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
	}
}
